Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Commit 9587f2e184f15ad42f8635113c109e1b1f0793f1


Parents : a0b1367
Author : Ivan <ivan@quad4.io>
Signature : Invalid signer <e46112d44649266d71fe2193e00a4710>, author is <ivan@quad4.io>
Date : 2026-07-14T17:27:54-05:00

refactor: update propagation node status handling and improve hello message processing

Changes

3 files changed, 13 insertions(+), 11 deletions(-)


Diff

diff --git a/meshchatx.rsm b/meshchatx.rsm
index 4d2164b7..707ca909 100644
Binary files a/meshchatx.rsm and b/meshchatx.rsm differ

diff --git a/meshchatx/meshchat.py b/meshchatx/meshchat.py
index 5d43a8bd..a33edb57 100644
--- a/meshchatx/meshchat.py
+++ b/meshchatx/meshchat.py
@@ -11608,23 +11608,22 @@ class ReticulumMeshChat:
@routes.get("/api/v1/lxmf/propagation-node/status")
async def propagation_node_status(request):
router = self.message_router
+ current_state = None
+ current_progress = 0.0
if router is not None:
try:
- state = router.propagation_transfer_state
- # COMPLETE is terminal, so expose idle so the UI does not keep
+ current_state = router.propagation_transfer_state
+ current_progress = router.propagation_transfer_progress
+ # COMPLETE is terminal, so reset to idle so the UI does not keep
# looking "busy" after a finished auto/manual sync.
- if state == router.PR_COMPLETE:
- router.propagation_transfer_state = router.PR_IDLE
+ if current_state == router.PR_COMPLETE:
with contextlib.suppress(Exception):
+ router.propagation_transfer_state = router.PR_IDLE
router.propagation_transfer_progress = 0.0
except Exception:
pass
sync_metrics = self._collect_propagation_sync_metrics()
- progress_raw = getattr(
- self.message_router,
- "propagation_transfer_progress",
- 0.0,
- )
+ progress_raw = current_progress
try:
progress_pct = float(progress_raw) * 100
except (TypeError, ValueError):
@@ -11636,11 +11635,13 @@ class ReticulumMeshChat:
)
if not isinstance(last_result, (int, float, str, type(None))):
last_result = None
+ if current_state is None:
+ current_state = 0
return web.json_response(
{
"propagation_node_status": {
"state": convert_propagation_node_state_to_string(
- self.message_router.propagation_transfer_state,
+ current_state,
),
"progress": progress_pct,
"messages_received": last_result,

diff --git a/meshchatx/src/backend/rrc/server.py b/meshchatx/src/backend/rrc/server.py
index c366df8c..ab57a297 100644
--- a/meshchatx/src/backend/rrc/server.py
+++ b/meshchatx/src/backend/rrc/server.py
@@ -401,7 +401,8 @@ class RRCHubServer:
)
return
if not sess.welcomed:
- self._handle_hello(link, sess, env, outgoing)
+ if t == proto.T_HELLO:
+ self._handle_hello(link, sess, env, outgoing)
return
if not self._refill_and_take(sess):
outgoing.append(


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────